package com.yihusitian.leecode.algorithm.easy;

import java.util.Objects;

/**
 * 实现 strStr() 函数。
 *
 * 给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串出现的第一个位置（下标从 0 开始）。如果不存在，则返回  -1 。
 *
 * 说明：
 *
 * 当 needle 是空字符串时，我们应当返回什么值呢？这是一个在面试中很好的问题。
 *
 * 对于本题而言，当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。
 */
public class ImplementStrstr {

    public int strStr1(String haystack, String needle) {
        if (Objects.isNull(haystack) || Objects.isNull(needle)) {
            return 0;
        }
        if (needle.length() == 0) {
            return 0;
        }
        if (needle.length() > haystack.length()) {
            return -1;
        }
        char[] haychars = haystack.toCharArray();
        char[] needlechars = needle.toCharArray();
        char needfirstch = needlechars[0];
        boolean allmatch = false;
        int result = 0;


        return -1;
    }

    public int strStr(String haystack, String needle) {
        if (Objects.isNull(haystack) || Objects.isNull(needle)) {
            return 0;
        }
        if (needle.length() == 0) {
            return 0;
        }
        if (needle.length() > haystack.length()) {
            return -1;
        }
        char[] haychars = haystack.toCharArray();
        char[] needlechars = needle.toCharArray();
        char needfirstch = needlechars[0];
        boolean allmatch = false;
        int result = 0;
        for (int i = 0; i < haychars.length; i++) {
            char currentch = haychars[i];
            if (needfirstch == currentch) {
                if (haychars.length - i < needlechars.length) {
                    return -1;
                }

                for (int j = 0; j < needlechars.length; j++) {
                    if (needlechars[j] == haychars[i + j]) {
                        allmatch = true;
                    } else {
                        allmatch = false;
                        break;
                    }
                }
                if (allmatch) {
                    result = i;
                    break;
                }
            }
        }
        if (allmatch) {
            return result;
        }
        return -1;
    }

    public static void main(String[] args) {
        System.out.println(new ImplementStrstr().strStr("zhongguorenmin", "gguoi"));
    }
}
